The present invention relates to methods and systems for maintaining components of application programs in a client/server network environment. A client is a personal computer or a workstation that operates on a network to execute various application programs. A server is typically a larger, centralized computer on the network which services the clients by providing programs, files and data, and by controlling hardware devices shared by the clients.
An application program typically comprises a number of components each of which exists as a separately addressable file, and where each component is identified by a version number, perhaps indicating its creation date. An application program may typically undergo numerous revisions and updates throughout the course of its operational existence on the client. In the network environment, an application program on the client can be kept current by replacing one or more of such components, or by adding or deleting components. The components having the latest version numbers can be maintained on the central server and distributed from the server to each individual client as needed through a standard file transfer protocol.
In the prior art systems, the version upgrading or component upgrading procedures are driven by the central server through complex interactions between the server and client systems.
Server-driven methods, however, are inherently unsuited for applications running on open-architecture networks, such as the Internet or intranet settings, in which the individual clients are difficult to access and control. The methods and systems of the present invention significantly improve the version updating process in a client-server environment in which such updating requires frequent and efficient deployment of the application components. In particular, the present invention shifts the version updating control to the individual client rather than the server, not only to reduce processing burden on the server but also to enable version updating in an open network environment, such as the Internet, where the source providing servers generally cannot control the remote clients. The methods of the present invention further adds security and protection from potential file corruption and undue delays during file transfer from a server to a client. By intelligently and automatically selecting to download and update only the needed and changed components of an application program, the present method alleviates the concerns of time and efficiency in any client-server network environment which requires highly dynamic application updates.
In the preferred embodiment, the present invention involves maintaining on a server the components of an application program, each having a version identification, and maintaining a catalog of components with the version identifications. The components may include executable codes, library files, parameter files, and data files of the application program. The application program is further maintained at a client. In response to a call to the server from the client, the server is caused to download the catalog to the client and the client compares the version identifications between the components maintained on the server as indicated in the downloaded catalog and the components maintained on the client. The application program on the client is updated by downloading from the server to the client the selected components for which the version identifications do not match. The updated application program is then executed on the client.
The above preferred method further comprises updating the application program on the client by downloading from the server to the client the selected components specified in the catalog which are new and, therefore, not present on the client. This also makes possible the initial installation of the application on the client. Similarly, the catalog file can specify and cause to delete from the client any components previously included in the application program which are no longer needed to execute in the updated version.
In the preferred embodiment, the catalog is used to specify: network addresses of other servers from which the catalog or component modules can be retrieved in subsequent updates; directory locations on the client for storing the downloaded components for proper execution of the application program on the client; and procedures for executing programs on the client, such as virus scanning code, after each component is downloaded as well as prior to and following the execution of the updated application program.
In the preferred embodiment, the catalog file retained on the client specifies a maximum wait-time interval to limit any delay associated with updating the application program, and a list of further servers on the network, each including a copy of the catalog file. When, in response to the call to the server from the client, the server fails to download the catalog within the maximum wait-time interval, the client cancels the download and routes the call to one of the further servers to engage a new download and so on until the catalog has been downloaded within the specified maximum wait-time interval.
In the preferred embodiment, the catalog file is specified with a cryptographic digest for each component to ensure its authenticity and integrity. The client updates the application program on the client by downloading and replacing selected components for which the cryptographic digests do not match, and the client further computes the cryptographic digests on the client to ensure that each of the downloaded components is authentic and that each has not been corrupted during the download transmission.
In the preferred embodiment, the frequency of the updating procedure is defined on a periodic basis or on an event-driven basis. For example, a predefined time interval, such as a day or week can be specified in the catalog, or by a user, and the application program is updated only on the first time the application is run in a specified time interval. In another embodiment, the application program on the client is automatically updated by an operating system or by a launcher program executed by a startup command on the client each time the client is booted up. In such an embodiment, the application program is caused to be updated regardless of whether the application program is executed at the client. Similarly, the client can be configured to update the application program periodically only as necessary to replace either outdated or corrupted components, or to delete any modules no longer needed, or to add any new modules.
In the preferred embodiment, the call to the server from the client is transmitted to the server by a launcher program on the client which operates as a proxy to the application program. Selecting the application from the client to execute the program engages the launcher to communicate with the server, to cause the server to download the catalog file, and to update the application program on the client and execute the updated application program on the client. In such an embodiment, the launcher can be implemented as a separate utility program or as a functional component of an operating system of the client and run invisibly in the background.
Once the catalog file has been retrieved and processed in accordance with the method of the present invention, the status of each updating of the application program, including names of the components replaced, deleted or added on the client and related procedures, can be recorded in a file on the client for tracking and reporting the program usage and updates. Information in the downloaded catalog file, which at least includes the list of names and version identifications of the components for the updated application program, is stored on the client to be used in a subsequent update. The catalog file can also be specified to include a procedure to delete the components following the execution of the updated application program to free up disk space on the client.
With the method of the present invention, controlling a version upgrade at the client through an open network environment, such as the Internet, can be easily implemented. In the Internet environment, for example, the call to a server for updating the application program can be made through a hypertext link on a Web browser directed to the catalog on the server. The launcher program can be integrated into the browser as a helper application, a plug-in module, or as a browser control. When the link is selected from the client browser, the launcher is executed to update the corresponding application components on the client. The downloading chores of the update can be accomplished through standard file transfer methods such as the file transfer protocol or the hypertext transfer protocol. The catalog file can also be specified to include a procedure to install on the client desktop an icon or a shortcut which enables the end user to run the application without accessing the Web page in subsequent updates.
The above and other features of the invention including various novel details of construction and combinations of parts will now be more particularly described with reference to the accompanying drawings and pointed out in the claims. These features are described with reference to installing and maintaining complete applications, but can also be used for individual components such as data files. It will be understood that the particular devices and methods embodying the invention are shown by way of illustration only and not as limitations of the invention. The principles and features of this invention may be employed in varied and numerous embodiments without departing from the scope of the invention.